// index.js
Page({
  data:{
    // 店铺信息
    shopMsg:{
      shopImg:'http://localhost:8080/shop/getShopImg/1',
      shopName:'',
      shopDescription:''
    },
    // 店铺轮播图图片
    img:[
      {id:1,url:'http://localhost:8080/shop/getActiveImg/1/1'},
      {id:2,url:'http://localhost:8080/shop/getActiveImg/1/2'},
      {id:3,url:'http://localhost:8080/shop/getActiveImg/1/3'},
    ],
    // 店铺商品
    product:[],
    // 用户购物车内商品
    carProduct:[],
    // 用户购物车总计价格
    carTotal:0,
    // 购物车内商品是否显示
    carShow:false,
    // 购物车内商品数目
    carNum:0
  },
  // 跳转事件
  toMsg() {
    wx.navigateTo({
      url: '/pages/msg/msg',
    })
  },
  // 点击购买按钮事件 购物车该商品数量+1
  addToCar(e){
    // 通过点击事件对象获取参数，得到用户点击的是哪个商品
    let item = e.currentTarget.dataset.item
    // 标记商品是否存在
    let exist = false
    // 判断购物车中是否有该商品
    this.data.carProduct.forEach((element,index)=>{
      // 若有该商品，数量++
      if(element.id==item.id) {
        let key = 'carProduct[' + index + '].num'
        this.setData({
          [key] : this.data.carProduct[index].num + 1,
          carTotal:this.data.carTotal + item.price, // 更新购物车总价=原购物车总价+该商品价格
          carNum:this.data.carNum + 1 // 更新购物车商品数+1
        })
        exist = true
      }
    })
    //  若没有该商品，为商品对象添加num属性，并将商品添加入购物车数组
    if(!exist) {
      item.num = 1
      this.data.carProduct.push(item)
      // 将商品加入购物车数组
      this.setData({
        carProduct:this.data.carProduct,
        carTotal:this.data.carTotal + item.price, // 更新购物车总价=原购物车总价+该商品价格
        carNum:this.data.carNum + 1 // 更新购物车商品数+1
      })
    }
  },
  // 购物车该商品数量-1
  reduceToCar(e){
    // 通过点击事件对象获取参数，得到用户点击的是哪个商品
    let item = e.currentTarget.dataset.item
    // 判断该商品数量是否大于1
    // 找到该商品
    this.data.carProduct.forEach((element,index)=>{
      if(element.id==item.id) {
        if(item.num>1) {
          let key = 'carProduct[' + index + '].num'
          this.setData({
            [key] : this.data.carProduct[index].num - 1, // 更新购物车数组
            carTotal : this.data.carTotal - item.price, // 更新总价
            carNum:this.data.carNum - 1 // 更新购物车商品数-1
          })
        }else {
          this.data.carProduct.splice(index,1)
          let carProductTemp = this.data.carProduct
          this.setData({
            carProduct:carProductTemp, // 更新购物车数组
            carTotal : this.data.carTotal - item.price, // 更新总价
            carNum:this.data.carNum - 1 // 更新购物车商品数-1
          })
        }
      }
    }
    )},
  // 点击购物车，展示用户购物车内容
  showCar(){
    this.setData({
      carShow:!this.data.carShow
    })
  },
  // 选好了按钮的点击事件，发送订单信息给后端
  payment(){
    // 判断购物车是否有商品
    if(this.data.carNum>0){
      // 发送请求...
      // 提示成功
      wx.showToast({
       title: '订单已提交',
        icon:'success',
        duration:1500
      })
      // 清空购物车信息
      this.setData({
        carTotal:0,
        carNum:0,
        carProduct:[],
      })
    }else{
      // 提示选择商品
      wx.showToast({
        title: '请选择商品',
        icon:'error',
        duration:1500
     })
    }
  },
  // 生命周期，初始化数据
  onReady(){
    // 发送请求获取店铺名
    wx.request({
      url: 'http://localhost:8080/shop/getShopName/1',
      success:res=>{
        this.setData({'shopMsg.shopName':res.data})
      }
    })
    // 发送请求获取店铺简介
    wx.request({
      url: 'http://localhost:8080/shop/getShopDescription/1',
      success:res=>{
        this.setData({'shopMsg.shopDescription':res.data})
      }
    })
    // 发送请求获取店铺货物
    wx.request({
      url: 'http://localhost:8080/goods/getShopGoods',
      success:res=>{
        let products = []
        res.data.data.typeNames.forEach((element,index) => {
          products.push({
            type:element,
            goods:res.data.data.goods[index]
          })
        });
        this.setData({product:products})
      }
    })
  }
})
